/*
 *Description:
 *User:laoHu
 *Created with Intellij IDEA 2025
 *Data:2025.05.00
 *Time:00:00
 */

class A {
   int a;
}
class B extends A {
   int b;
}
class C extends B {
   int c;
}
public class Main {

    public static void main(String[] args) {
        A a0=new A();//1

        A a1=new B();//2

        A a2=new C();//3
        //虽然没有报错，但是a1和a2指向的内存空间是比较大的
        //只能访问A类的属性或方法会造成较大内存空间的浪费
        a0.a = 1;
        a1.a = 2;
        a2.a = 3;
        System.out.println(a0.a);

    }
}

//以下程序输出的结果是什么？
//BaseBase

//class Base {
//    Base() {
//        System.out.print("Base");
//    }
//}
//
//public class Main extends Base {
//
//    public static  void main(String[] args) {
//        new Main();//1
//        //调用父类无参的构造方法
//        new Base();//2
//    }
//}

//以下程序输出的结果是什么？YXYZ
//先执行main函数的语句开辟Main的空间
//继承X类型，执行开辟Y类，输出Y
//执行X的构造方法，输出x
//进入Mian类型，创建Y类，输出Y
//最后，进入Main的构造，输出Z
//class X{
//    Y y=new Y();//1
//    public X(){//2
//        System.out.print("X");
//    }
//}
//class Y{
//    public Y(){//3
//        System.out.print("Y");
//    }
//}
//public class Main extends X{
//    Y y=new Y();//4
//    public Main(){//5
//        System.out.print("Z");
//    }
//    public static void main(String[] args) {
//        new Main();
//    }
//}